﻿Public Class FrmMantPerfil
    Dim dc_resultado As Long
    Dim dg_resultado As String

    Dim dc_perfil As Integer
    Dim dg_perfil As String
    Dim dm_vigente As String
    Dim dc_transaccion_cod As Integer
    Dim dm_seleccionado_cod As String
    Dim dm_evento_load As Boolean

    Dim dn_indice As Integer
    Dim dn_total_registros As Integer

    Private Function ValidaDatos() As Boolean
        ValidaDatos = True

        If TxtdcPerfil.Text.Trim.Length = 0 Then
            ValidaDatos = False
            MsgBox("Debe especificar código de perfil", MsgBoxStyle.Information)
            TxtdcPerfil.Focus()
            Exit Function
        End If

        If TxtdgPerfil.Text.Trim.Length = 0 Then
            ValidaDatos = False
            MsgBox("Debe especificar Descripción de perfil", MsgBoxStyle.Information)
            TxtdgPerfil.Focus()
            Exit Function
        End If

    End Function

    Private Sub BuscaPerfil()
        If TxtdcPerfil.Text.Trim.Length = 0 Then Exit Sub
        dc_perfil = Val(TxtdcPerfil.Text)
        dc_resultado = ModSeguridad.busca_perfil(dc_perfil, dg_perfil, dm_vigente, dg_resultado)

        If dc_resultado <> 0 Then
            If dc_resultado = 9999 Then
                FraEncabezado.Enabled = False
                FraDetalle.Enabled = True
                Me.CmdEliminar.Enabled = False
                TxtdgPerfil.Focus()
            Else
                MsgBox(dg_resultado, MsgBoxStyle.Information)
                Exit Sub
            End If
        Else
            Me.CmdEliminar.Enabled = True
            FraEncabezado.Enabled = False
            FraDetalle.Enabled = True
            TxtdgPerfil.Text = dg_perfil
            Me.ChkVigente.CheckState = IIf(dm_vigente.Trim.ToUpper = "S", CheckState.Checked, CheckState.Unchecked)
            TxtdgPerfil.Focus()
            dc_resultado = ConsultaTransacciones_perfil(dc_perfil, GrdTransacciones, dg_resultado)
        End If

    End Sub

    Private Sub nuevo()
        Me.TxtdcPerfil.Text = ""
        Me.TxtdgPerfil.Text = ""
        Me.ChkVigente.CheckState = CheckState.Unchecked
        dc_resultado = ModSeguridad.ObtieneUltimoPerfil(dc_perfil, dg_resultado)
        Me.TxtdcPerfil.Text = dc_perfil

        Me.CmdEliminar.Enabled = False

        FraEncabezado.Enabled = True
        FraDetalle.Enabled = False
        dc_resultado = ModSeguridad.ConsultaTransacciones(GrdTransacciones, dg_resultado)

        Me.TxtdcPerfil.Focus()
    End Sub

    Private Sub FrmPerfil_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        dm_evento_load = True
        Call nuevo()
        dm_evento_load = False
    End Sub

    Private Sub CmdSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdSalir.Click
        Me.Close()
    End Sub

    Private Sub cmdNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNuevo.Click
        Call nuevo()
    End Sub

    Private Sub TxtdcPerfil_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtdcPerfil.GotFocus
        Me.TxtdcPerfil.SelectionStart = 0
        Me.TxtdcPerfil.SelectionLength = Me.TxtdcPerfil.TextLength
    End Sub

    Private Sub TxtdgPerfil_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtdgPerfil.GotFocus
        Me.TxtdgPerfil.SelectionStart = 0
        Me.TxtdgPerfil.SelectionLength = Me.TxtdgPerfil.TextLength
    End Sub

    Private Sub TxtdgPerfil_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtdgPerfil.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub

    Private Sub TxtdcPerfil_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtdcPerfil.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            Call BuscaPerfil()
            Exit Sub
        End If

        If Not (e.KeyChar = ChrW(Keys.D0) Or e.KeyChar = ChrW(Keys.D1) Or e.KeyChar = ChrW(Keys.D2) _
        Or e.KeyChar = ChrW(Keys.D3) Or e.KeyChar = ChrW(Keys.D4) Or e.KeyChar = ChrW(Keys.D5) _
        Or e.KeyChar = ChrW(Keys.D6) Or e.KeyChar = ChrW(Keys.D7) Or e.KeyChar = ChrW(Keys.D8) _
        Or e.KeyChar = ChrW(Keys.D9) Or e.KeyChar = ChrW(Keys.Back)) Then
            e.KeyChar = ChrW(Keys.None)
        End If
    End Sub

    Private Sub CmdGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdGrabar.Click
        If Not ValidaDatos() Then Exit Sub

        dc_perfil = Val(TxtdcPerfil.Text)
        dg_perfil = TxtdgPerfil.Text.Trim.ToUpper
        dm_vigente = IIf(ChkVigente.CheckState = CheckState.Checked, "S", "N")

        dc_resultado = ModSeguridad.Insertar_perfil(dc_perfil, dg_perfil, dm_vigente, dg_resultado)

        If dc_resultado = 0 Then
            dc_resultado = ModSeguridad.Eliminar_perfil_transaccion(dc_perfil, dg_resultado)
            If dc_resultado = 0 Then
                For dn_indice = 0 To GrdTransacciones.Rows.Count - 1
                    dm_seleccionado_cod = IIf(GrdTransacciones.Item(0, dn_indice).Value = True, "S", "N")

                    If dm_seleccionado_cod = "S" Then
                        dc_transaccion_cod = Val(GrdTransacciones.Item(1, dn_indice).Value)
                        dc_resultado = ModSeguridad.Insertar_perfil_transaccion(dc_perfil, dc_transaccion_cod, dg_resultado)
                    End If
                Next dn_indice
                If dc_resultado <> 0 Then
                    MsgBox(dg_resultado, MsgBoxStyle.OkOnly + MsgBoxStyle.Exclamation)
                Else
                    MsgBox("Grabación realizada.", MsgBoxStyle.Information)
                    Call nuevo()
                End If
            End If
        End If

    End Sub

    Private Sub CmdEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdEliminar.Click
        If Not ValidaDatos() Then Exit Sub

        If vbYes = MsgBox("¿Desea eliminar perfil?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) Then
            dc_perfil = Val(TxtdcPerfil.Text)

            dc_resultado = ModSeguridad.Eliminar_perfil(dc_perfil, dg_resultado)

            If dc_resultado = 0 Then
                dc_resultado = ModSeguridad.Eliminar_perfil_transaccion(dc_perfil, dg_resultado)
                If dc_resultado <> 0 Then
                    MsgBox(dg_resultado, MsgBoxStyle.OkOnly + MsgBoxStyle.Exclamation)
                Else
                    MsgBox("Eliminación realizada.", MsgBoxStyle.Information)
                    Call nuevo()
                End If
            End If

        End If

    End Sub
End Class